↳ Prolog
↳ PrologToPiTRSProof
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
MYIS_IN(Z, X) → U11(Z, X, evaluate_in(X, Z))
MYIS_IN(Z, X) → EVALUATE_IN(X, Z)
EVALUATE_IN(X, X) → U111(X, myinteger_in(X))
EVALUATE_IN(X, X) → MYINTEGER_IN(X)
MYINTEGER_IN(s(X)) → U121(X, myinteger_in(X))
MYINTEGER_IN(s(X)) → MYINTEGER_IN(X)
EVALUATE_IN(*(X, Y), Z) → U81(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(*(X, Y), Z) → EVALUATE_IN(X, X1)
EVALUATE_IN(-(X, Y), Z) → U51(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(-(X, Y), Z) → EVALUATE_IN(X, X1)
EVALUATE_IN(+(X, Y), Z) → U21(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(+(X, Y), Z) → EVALUATE_IN(X, X1)
U21(X, Y, Z, evaluate_out(X, X1)) → U31(X, Y, Z, X1, evaluate_in(Y, Y1))
U21(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
U31(X, Y, Z, X1, evaluate_out(Y, Y1)) → U41(X, Y, Z, add_in(X1, Y1, Z))
U31(X, Y, Z, X1, evaluate_out(Y, Y1)) → ADD_IN(X1, Y1, Z)
ADD_IN(s(X), Y, s(Z)) → U131(X, Y, Z, add_in(X, Y, Z))
ADD_IN(s(X), Y, s(Z)) → ADD_IN(X, Y, Z)
U51(X, Y, Z, evaluate_out(X, X1)) → U61(X, Y, Z, X1, evaluate_in(Y, Y1))
U51(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
U61(X, Y, Z, X1, evaluate_out(Y, Y1)) → U71(X, Y, Z, sub_in(X1, Y1, Z))
U61(X, Y, Z, X1, evaluate_out(Y, Y1)) → SUB_IN(X1, Y1, Z)
SUB_IN(s(X), s(Y), Z) → U141(X, Y, Z, sub_in(X, Y, Z))
SUB_IN(s(X), s(Y), Z) → SUB_IN(X, Y, Z)
U81(X, Y, Z, evaluate_out(X, X1)) → U91(X, Y, Z, X1, evaluate_in(Y, Y1))
U81(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
U91(X, Y, Z, X1, evaluate_out(Y, Y1)) → U101(X, Y, Z, mult_in(X1, Y1, Z))
U91(X, Y, Z, X1, evaluate_out(Y, Y1)) → MULT_IN(X1, Y1, Z)
MULT_IN(s(X), Y, R) → U151(X, Y, R, mult_in(X, Y, Z))
MULT_IN(s(X), Y, R) → MULT_IN(X, Y, Z)
U151(X, Y, R, mult_out(X, Y, Z)) → U161(X, Y, R, add_in(Y, Z, R))
U151(X, Y, R, mult_out(X, Y, Z)) → ADD_IN(Y, Z, R)
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
MYIS_IN(Z, X) → U11(Z, X, evaluate_in(X, Z))
MYIS_IN(Z, X) → EVALUATE_IN(X, Z)
EVALUATE_IN(X, X) → U111(X, myinteger_in(X))
EVALUATE_IN(X, X) → MYINTEGER_IN(X)
MYINTEGER_IN(s(X)) → U121(X, myinteger_in(X))
MYINTEGER_IN(s(X)) → MYINTEGER_IN(X)
EVALUATE_IN(*(X, Y), Z) → U81(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(*(X, Y), Z) → EVALUATE_IN(X, X1)
EVALUATE_IN(-(X, Y), Z) → U51(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(-(X, Y), Z) → EVALUATE_IN(X, X1)
EVALUATE_IN(+(X, Y), Z) → U21(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(+(X, Y), Z) → EVALUATE_IN(X, X1)
U21(X, Y, Z, evaluate_out(X, X1)) → U31(X, Y, Z, X1, evaluate_in(Y, Y1))
U21(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
U31(X, Y, Z, X1, evaluate_out(Y, Y1)) → U41(X, Y, Z, add_in(X1, Y1, Z))
U31(X, Y, Z, X1, evaluate_out(Y, Y1)) → ADD_IN(X1, Y1, Z)
ADD_IN(s(X), Y, s(Z)) → U131(X, Y, Z, add_in(X, Y, Z))
ADD_IN(s(X), Y, s(Z)) → ADD_IN(X, Y, Z)
U51(X, Y, Z, evaluate_out(X, X1)) → U61(X, Y, Z, X1, evaluate_in(Y, Y1))
U51(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
U61(X, Y, Z, X1, evaluate_out(Y, Y1)) → U71(X, Y, Z, sub_in(X1, Y1, Z))
U61(X, Y, Z, X1, evaluate_out(Y, Y1)) → SUB_IN(X1, Y1, Z)
SUB_IN(s(X), s(Y), Z) → U141(X, Y, Z, sub_in(X, Y, Z))
SUB_IN(s(X), s(Y), Z) → SUB_IN(X, Y, Z)
U81(X, Y, Z, evaluate_out(X, X1)) → U91(X, Y, Z, X1, evaluate_in(Y, Y1))
U81(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
U91(X, Y, Z, X1, evaluate_out(Y, Y1)) → U101(X, Y, Z, mult_in(X1, Y1, Z))
U91(X, Y, Z, X1, evaluate_out(Y, Y1)) → MULT_IN(X1, Y1, Z)
MULT_IN(s(X), Y, R) → U151(X, Y, R, mult_in(X, Y, Z))
MULT_IN(s(X), Y, R) → MULT_IN(X, Y, Z)
U151(X, Y, R, mult_out(X, Y, Z)) → U161(X, Y, R, add_in(Y, Z, R))
U151(X, Y, R, mult_out(X, Y, Z)) → ADD_IN(Y, Z, R)
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
SUB_IN(s(X), s(Y), Z) → SUB_IN(X, Y, Z)
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
SUB_IN(s(X), s(Y), Z) → SUB_IN(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
SUB_IN(s(X), s(Y)) → SUB_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PiDP
ADD_IN(s(X), Y, s(Z)) → ADD_IN(X, Y, Z)
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PiDP
ADD_IN(s(X), Y, s(Z)) → ADD_IN(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PiDP
ADD_IN(s(X), Y) → ADD_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
MULT_IN(s(X), Y, R) → MULT_IN(X, Y, Z)
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
MULT_IN(s(X), Y, R) → MULT_IN(X, Y, Z)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
MULT_IN(s(X), Y) → MULT_IN(X, Y)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
MYINTEGER_IN(s(X)) → MYINTEGER_IN(X)
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
MYINTEGER_IN(s(X)) → MYINTEGER_IN(X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
MYINTEGER_IN(s(X)) → MYINTEGER_IN(X)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
U21(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
EVALUATE_IN(*(X, Y), Z) → U81(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(-(X, Y), Z) → EVALUATE_IN(X, X1)
U51(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
EVALUATE_IN(-(X, Y), Z) → U51(X, Y, Z, evaluate_in(X, X1))
U81(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
EVALUATE_IN(+(X, Y), Z) → U21(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(+(X, Y), Z) → EVALUATE_IN(X, X1)
EVALUATE_IN(*(X, Y), Z) → EVALUATE_IN(X, X1)
myis_in(Z, X) → U1(Z, X, evaluate_in(X, Z))
evaluate_in(X, X) → U11(X, myinteger_in(X))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U1(Z, X, evaluate_out(X, Z)) → myis_out(Z, X)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
U21(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
EVALUATE_IN(*(X, Y), Z) → U81(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(-(X, Y), Z) → EVALUATE_IN(X, X1)
U51(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
EVALUATE_IN(-(X, Y), Z) → U51(X, Y, Z, evaluate_in(X, X1))
U81(X, Y, Z, evaluate_out(X, X1)) → EVALUATE_IN(Y, Y1)
EVALUATE_IN(+(X, Y), Z) → U21(X, Y, Z, evaluate_in(X, X1))
EVALUATE_IN(+(X, Y), Z) → EVALUATE_IN(X, X1)
EVALUATE_IN(*(X, Y), Z) → EVALUATE_IN(X, X1)
evaluate_in(X, X) → U11(X, myinteger_in(X))
evaluate_in(*(X, Y), Z) → U8(X, Y, Z, evaluate_in(X, X1))
evaluate_in(-(X, Y), Z) → U5(X, Y, Z, evaluate_in(X, X1))
evaluate_in(+(X, Y), Z) → U2(X, Y, Z, evaluate_in(X, X1))
U11(X, myinteger_out(X)) → evaluate_out(X, X)
U8(X, Y, Z, evaluate_out(X, X1)) → U9(X, Y, Z, X1, evaluate_in(Y, Y1))
U5(X, Y, Z, evaluate_out(X, X1)) → U6(X, Y, Z, X1, evaluate_in(Y, Y1))
U2(X, Y, Z, evaluate_out(X, X1)) → U3(X, Y, Z, X1, evaluate_in(Y, Y1))
myinteger_in(0) → myinteger_out(0)
myinteger_in(s(X)) → U12(X, myinteger_in(X))
U9(X, Y, Z, X1, evaluate_out(Y, Y1)) → U10(X, Y, Z, mult_in(X1, Y1, Z))
U6(X, Y, Z, X1, evaluate_out(Y, Y1)) → U7(X, Y, Z, sub_in(X1, Y1, Z))
U3(X, Y, Z, X1, evaluate_out(Y, Y1)) → U4(X, Y, Z, add_in(X1, Y1, Z))
U12(X, myinteger_out(X)) → myinteger_out(s(X))
U10(X, Y, Z, mult_out(X1, Y1, Z)) → evaluate_out(*(X, Y), Z)
U7(X, Y, Z, sub_out(X1, Y1, Z)) → evaluate_out(-(X, Y), Z)
U4(X, Y, Z, add_out(X1, Y1, Z)) → evaluate_out(+(X, Y), Z)
mult_in(0, Y, 0) → mult_out(0, Y, 0)
mult_in(s(X), Y, R) → U15(X, Y, R, mult_in(X, Y, Z))
sub_in(X, 0, X) → sub_out(X, 0, X)
sub_in(s(X), s(Y), Z) → U14(X, Y, Z, sub_in(X, Y, Z))
add_in(0, X, X) → add_out(0, X, X)
add_in(s(X), Y, s(Z)) → U13(X, Y, Z, add_in(X, Y, Z))
U15(X, Y, R, mult_out(X, Y, Z)) → U16(X, Y, R, add_in(Y, Z, R))
U14(X, Y, Z, sub_out(X, Y, Z)) → sub_out(s(X), s(Y), Z)
U13(X, Y, Z, add_out(X, Y, Z)) → add_out(s(X), Y, s(Z))
U16(X, Y, R, add_out(Y, Z, R)) → mult_out(s(X), Y, R)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
EVALUATE_IN(+(X, Y)) → U21(Y, evaluate_in(X))
EVALUATE_IN(*(X, Y)) → EVALUATE_IN(X)
EVALUATE_IN(-(X, Y)) → EVALUATE_IN(X)
EVALUATE_IN(-(X, Y)) → U51(Y, evaluate_in(X))
EVALUATE_IN(+(X, Y)) → EVALUATE_IN(X)
U51(Y, evaluate_out(X1)) → EVALUATE_IN(Y)
U21(Y, evaluate_out(X1)) → EVALUATE_IN(Y)
EVALUATE_IN(*(X, Y)) → U81(Y, evaluate_in(X))
U81(Y, evaluate_out(X1)) → EVALUATE_IN(Y)
evaluate_in(X) → U11(X, myinteger_in(X))
evaluate_in(*(X, Y)) → U8(Y, evaluate_in(X))
evaluate_in(-(X, Y)) → U5(Y, evaluate_in(X))
evaluate_in(+(X, Y)) → U2(Y, evaluate_in(X))
U11(X, myinteger_out) → evaluate_out(X)
U8(Y, evaluate_out(X1)) → U9(X1, evaluate_in(Y))
U5(Y, evaluate_out(X1)) → U6(X1, evaluate_in(Y))
U2(Y, evaluate_out(X1)) → U3(X1, evaluate_in(Y))
myinteger_in(0) → myinteger_out
myinteger_in(s(X)) → U12(myinteger_in(X))
U9(X1, evaluate_out(Y1)) → U10(mult_in(X1, Y1))
U6(X1, evaluate_out(Y1)) → U7(sub_in(X1, Y1))
U3(X1, evaluate_out(Y1)) → U4(add_in(X1, Y1))
U12(myinteger_out) → myinteger_out
U10(mult_out(Z)) → evaluate_out(Z)
U7(sub_out(Z)) → evaluate_out(Z)
U4(add_out(Z)) → evaluate_out(Z)
mult_in(0, Y) → mult_out(0)
mult_in(s(X), Y) → U15(Y, mult_in(X, Y))
sub_in(X, 0) → sub_out(X)
sub_in(s(X), s(Y)) → U14(sub_in(X, Y))
add_in(0, X) → add_out(X)
add_in(s(X), Y) → U13(add_in(X, Y))
U15(Y, mult_out(Z)) → U16(add_in(Y, Z))
U14(sub_out(Z)) → sub_out(Z)
U13(add_out(Z)) → add_out(s(Z))
U16(add_out(R)) → mult_out(R)
evaluate_in(x0)
U11(x0, x1)
U8(x0, x1)
U5(x0, x1)
U2(x0, x1)
myinteger_in(x0)
U9(x0, x1)
U6(x0, x1)
U3(x0, x1)
U12(x0)
U10(x0)
U7(x0)
U4(x0)
mult_in(x0, x1)
sub_in(x0, x1)
add_in(x0, x1)
U15(x0, x1)
U14(x0)
U13(x0)
U16(x0)
From the DPs we obtained the following set of size-change graphs: